function (CheckCompilerEnvironment)
    if (JSTD_CMAKE_SHOW_DETAIL)
        message(STATUS "------------------ Compiler Environment ------------------")
        message(STATUS "CMAKE_C_COMPILER_ID   = ${CMAKE_C_COMPILER_ID}")
        message(STATUS "CMAKE_CXX_COMPILER_ID = ${CMAKE_CXX_COMPILER_ID}")
        message(STATUS "CMAKE_C_COMPILER_VERSION   = ${CMAKE_C_COMPILER_VERSION}")
        message(STATUS "CMAKE_CXX_COMPILER_VERSION = ${CMAKE_CXX_COMPILER_VERSION}")
        message(STATUS "CMAKE_COMPILER_IS_GNUCC  = ${CMAKE_COMPILER_IS_GNUCC}")
        message(STATUS "CMAKE_COMPILER_IS_GNUCXX = ${CMAKE_COMPILER_IS_GNUCXX}")

        if (MINGW)
            message(STATUS "Env: IS_MINGW")
        endif(MINGW)
        if (CYGWIN)
            message(STATUS "Env: IS_CYGWIN")
        endif(CYGWIN)
        if (MSYS)
            message(STATUS "Env: IS_MSYS")
        endif(MSYS)
        if (MSVC)
            message(STATUS "Env: IS_MSVC")
        endif(MSVC)
        if (MSVC_IDE)
            message(STATUS "Env: IS_MSVC_IDE")
        endif(MSVC_IDE)

        if (MSVC_IDE)
            if (MSVC60)
                message(STATUS "MSVC Ver: MSVC60")
            elseif (MSVC70)
                message(STATUS "MSVC Ver: MSVC70")
            elseif (MSVC71)
                message(STATUS "MSVC Ver: MSVC71")
            elseif (MSVC80)
                message(STATUS "MSVC Env: MSVC80")
            elseif (MSVC90)
                message(STATUS "MSVC Ver: MSVC90")
            elseif (MSVC10)
                message(STATUS "MSVC Ver: MSVC10")
            elseif (MSVC11)
                message(STATUS "MSVC Ver: MSVC11")
            elseif (MSVC12)
                message(STATUS "MSVC Ver: MSVC12")
            elseif (MSVC13)
                message(STATUS "MSVC Ver: MSVC13")
            elseif (MSVC14)
                message(STATUS "MSVC Ver: MSVC14")
            elseif (MSVC15)
                message(STATUS "MSVC Ver: MSVC15")
            elseif (MSVC16)
                message(STATUS "MSVC Ver: MSVC16")
            elseif (MSVC17)
                message(STATUS "MSVC Ver: MSVC17")
            elseif (MSVC18)
                message(STATUS "MSVC Ver: MSVC18")
            elseif (MSVC19)
                message(STATUS "MSVC Ver: MSVC19")
            else (MSVC60)
                message(STATUS "MSVC: Unknown Version")
            endif (MSVC60)
            message(STATUS "CMAKE_COMPILER_2005 = ${CMAKE_COMPILER_2005}")
            message(STATUS "MSVC_VERSION = ${MSVC_VERSION}")
            message(STATUS "MSVC_TOOLSET_VERSION = ${MSVC_TOOLSET_VERSION}")
        endif(MSVC_IDE)

        message(STATUS "----------------------------------------------------------")
        message("")
    endif()
endfunction(CheckCompilerEnvironment)
